
const Koa = require('koa');
const { moduleResolvePlugin } = require('./serverPluginModuleResolve');
const { moduleRewritePlugin } = require('./serverPluginModuleRewrite');
const serveStaticPlugin = require('./serverPluginServeStatic');
const { vuePlugin } = require('./serverPluginVue');


function createServer(){
    let app = new Koa();
    // 实现静态服务功能 就是访问我们的服务器 可以返回对应的文件 koa-static
    const context = { // 直接创建一个上下文 来给不同的插件共享功能
        app,
        root:process.cwd() // 这个目录就在vite-vue
    }
    const resolvePlugin = [
        moduleRewritePlugin, // 2.重写我们的请求路径, 重写后浏览器会再次发送请求 /@modules/vue
        moduleResolvePlugin, // vue  => import xx from 'xx'

        vuePlugin, // 解析.vue文件

        serveStaticPlugin // 1.静态服务插件 实现可以返回文件的功能
    ]
    resolvePlugin.forEach(plugin=>plugin(context))

    return app;
}

createServer().listen(4000,()=>{
    console.log('vite start 4000');
});

// nodemon  